Today most computer networks are modeled on a layered network architecture comprising a physical layer at one end, an application layer at the opposite end, and a number of intermediate layers in between. Each layer in the architecture performs services on behalf of the layer above it. Data packets are physically received over a communications medium, for example, an Ethernet cable, in the physical layer and is are processed at each successive layer until it is passed to an application present in the application layer.
In some cases, end nodes in a computer network communicate indirectly via one or more intermediate nodes. For example, a client node may communicate indirectly with a server node via an intermediate proxy or gateway node. “Nodes” could also be peers in a peer-to-peer configuration.
While there may be definite advantages in end nodes communicating via an intermediate node (for example, the intermediate node may perform certain value-added functions and services on behalf of one of the end nodes), there are also overheads. These overheads may include, in the case of an intermediate proxy node bridging communications between two end nodes, the overhead of setting up a communications link, or “pipe,” between each end node and the proxy node. This involves steps such as the exchange of identification and configuration information (hand shaking) and processing of the data in each of the intermediate layers before passing it to the application layer. A result of such processing is that multiple copies of the data are made in the application and intermediate layers.
These overheads may be justified in view of the value-added services performed by the intermediate node. However, sometimes the intermediate node does not perform any value-added services but acts merely as a conduit for the data.
In this latter scenario, there is no need for the data to be sent from the physical layer all the way up to the application layer. Instead, a technique called splicing allows the intermediate node to forward data packets between the end nodes such that processing of the data packet is confined to a lower level below the application layer in the network architecture. For example, in the case of the Open Systems Interconnect (OSI) network architecture model, the processing is confined to the interface between the Transmission Control Protocol (TCP) and Internet Protocol (IP) layers.
One problem with existing splicing techniques is that an intermediate node is configured to splice communications before actually receiving the data packets. It may be that the nature of the data is such that an application in the application layer may be able to perform value-added services on the data. However, since the intermediate node has already been set up to splice communications, the data would not be passed to the application which is then unable to perform the value-added services.